# coding=utf-8
from collections import Counter


async def slice_query_title(data):

    if len(data['切片标题']) != 0:
        slice_list = data['切片标题']
        matrix = []
        for query_list in data['问询标题']:
            intersection_set = set(slice_list).intersection(set(query_list))
            print(len(intersection_set))
            print(intersection_set)
            matrix.append(list(intersection_set))

        # 将二维列表展平为一维列表
        flattened_list = [item for sublist in matrix for item in sublist]
        print(flattened_list)
        # 使用Counter统计每个元素的出现次数
        counter = Counter(flattened_list)
        print(counter)
        # 将Counter对象转换为列表，并按出现次数降序排列
        sorted_counts = sorted(counter.items(), key=lambda x: x[1], reverse=True)

        # 输出结果
        print("元素及其出现次数（按次数降序）：")
        new_slice_list = []
        new_query_list = []
        for i in range(len(data['问询标题'])):
            new_query_list.append([])
        for element, count in sorted_counts:
            if element in slice_list:
                new_slice_list.append(element)
            for num, q_list in enumerate(data['问询标题']):
                if element in q_list:
                    new_query_list[num].append(element)
            print(f"{element}: {count}")

        print(new_slice_list)
        print(new_query_list)
        # return  {"切片标题": new_slice_list, '问询标题': new_query_list}
    else:
        flattened_list = []
        for num, q_list in enumerate(data['问询标题']):
            for q_title in q_list:
                flattened_list.append(q_title)
        print(flattened_list)
        # 使用Counter统计每个元素的出现次数
        counter = Counter(flattened_list)
        print(counter)
        # 将Counter对象转换为列表，并按出现次数降序排列
        sorted_counts = sorted(counter.items(), key=lambda x: x[1], reverse=True)
        print("元素及其出现次数（按次数降序）：")

        new_slice_list = []
        new_query_list = []
        for i in range(len(data['问询标题'])):
            new_query_list.append([])
        for element, count in sorted_counts:
            if count >= 2:
                new_slice_list.append(element)
                for num, q_list in enumerate(data['问询标题']):
                    if element in q_list:
                        new_query_list[num].append(element)
            print(f"{element}: {count}")
    if new_slice_list == [] or [] in new_query_list:
        return data
    return  {"切片标题": new_slice_list, '问询标题': new_query_list}


if __name__ == "__main__":
    import asyncio
    from pprint import pprint
    data = {"切片标题": [1, 2, 3, 4], '问询标题': [[9, 4, 5, 1],
                                                [1, 3, 8, 4],
                                                [6, 7, 8, 4, 3]]}

    data = {"切片标题": ['信息披露','合规交易与股权结构','募集资金','持续盈利能力','风险揭示与信息披露','盈利能力','财务处理','股权结构'],
            '问询标题': [['信息披露', '风险提示与说明', '募投项目', '企业销售', '核心竞争力分析', '风险揭示与信息披露', '公司业务', '持续盈利能力', '公司产品及服务', '盈利能力', '营运能力'],
                        ['企业销售', '持续盈利能力', '利润损益', '盈利能力', '营运能力'],
                        ['信息披露', '风险提示与说明', '企业销售', '持续盈利能力', '盈利能力', '营运能力']]}

    data = {"切片标题": [],
            '问询标题': [['信息披露', '风险提示与说明', '募投项目', '企业销售', '核心竞争力分析', '风险揭示与信息披露', '公司业务', '持续盈利能力', '公司产品及服务', '盈利能力', '营运能力'],
                        ['企业销售', '持续盈利能力', '利润损益', '盈利能力', '营运能力'],
                        ['信息披露', '风险提示与说明', '企业销售', '持续盈利能力', '盈利能力', '营运能力']]}
    data = {"切片标题":["风险提示与说明"],
            "问询标题":[['风险提示与说明', '信息披露', '企业销售', '利润损益', '财务处理'],
                        ['风险提示与说明', '信息披露', '企业销售', '利润损益', '财务处理'],
                        ['风险提示与说明', '信息披露', '企业销售', '利润损益', '财务处理'],
      ]}
    new_data = asyncio.run(slice_query_title(data))
    pprint(new_data)